Reference Noise Compensation for Single-Ended Signaling

ABSTRACT

A receiver circuit includes a clock lane propagating a clock signal. A self-sampled clock applies a delayed version of the clock signal to the clock signal and compensation logic controls an amount of delay of the delayed version of the clock, based on a reference voltage offset (difference) between the receiver and a transmitter. The delayed version of the clock is centered on one unit interval of the clock. An offset correction is computed as a global offset value based on a clock duty cycle error, combined with a local offset value for each data lane, and is applied to data receiver front ends.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application claims priority and benefit under 35 U.S.C. 120 as a continuation in part of application Ser. No. 16/905,635, titled “REFERENCE NOISE COMPENSATION FOR SINGLE-ENDED SIGNALING”, filed on Jun. 18, 2020, the contents of which are incorporated herein by reference in their entirety. This application also claims priority and benefit of U.S. provisional application Ser. No. 62/902,232, titled “REFERENCE NOISE COMPENSATION FOR SINGLE-ENDED SIGNALING”, filed on Sep. 18, 2019, the contents of which are incorporated herein by reference in their entirety.

GOVERNMENT LICENSE RIGHTS

This invention was made with Government support under Agreement HR0011-16-3-0003, awarded by DARPA. The Government has certain rights in the invention.

BACKGROUND

With better energy and area efficiency than differential links, single-ended serial links are an attractive signaling technique in short-reach high-bandwidth I/O applications. One limitation of single-ended links is their sensitivity to environment noise because the accuracy of data recovery at the receiver relies heavily on the correlation of reference voltages at the two ends of the link.

Modern integrated circuits may ramp hundreds of amperes of supply current within tens of nanoseconds. These transient currents may induce local supply voltage and ground noise amplitudes of hundreds of millivolts at tens of megahertz and create large reference voltage offsets between chips on different packages on the same printed circuit board. Traditional methods to solve the reference voltage matching problem include using differential signaling and data pattern coding. These methods require relatively large power and pin overhead compared to single-ended solutions.

Single-ended signaling utilizes a reference signal to correlate the thresholds at both transmit (TX) and receive (RX) ends of the link. This reference signal may be communicated through a dedicated channel or embedded (coded) with the data signals. Both methods sacrifice bandwidth and/or can be expensive to implement.

For short-range (e.g., on-package) links between different chips where a reliable common reference (e.g., ground plane) is available, the chip-to-chip reference offset is often low enough relative to the signal amplitude that it fits within a performance margin. However in longer-range links (e.g., package-to-package), low-frequency noise caused by local load current changes paired with power distribution network (PDN) resonances may induce a reference offset between the transmitter and the receiver that significantly consumes or exceeds the performance margin.

BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWINGS

To easily identify the discussion of any particular element or act, in most cases the most significant digit or digits in a reference number refer to the figure number in which that element is first introduced.

FIG. 1 depicts a transmitter-receiver system 102 in accordance with one embodiment.

FIG. 2 depicts a single ended transceiver 200 in one embodiment.

FIG. 3 depicts a self-sampling receiver clock 300 in accordance with one embodiment.

FIG. 4 depicts exemplary signal timing diagrams 400 for the self-sampling receiver clock 300.

FIG. 5 depicts compensation logic 500 for controlling the clock sampling delay circuit 1000 and data receiver front end, in accordance with one embodiment.

FIG. 6 depicts exemplary signal diagrams for loop response.

FIG. 7 depicts acceptable 1 UI delay conditions 700 in accordance with one embodiment.

FIG. 8 depicts large 1 UI delay conditions 800 in accordance with one embodiment.

FIG. 9 depicts dynamic offset compensation 900 in accordance with one embodiment.

FIG. 10 depicts a clock sampling delay circuit 1000 in accordance with one embodiment.

FIG. 11 depicts a dithering generator 1100 in accordance with one embodiment.

FIG. 12 depicts a signal diagrams 1200 in accordance with one embodiment.

FIG. 13 depicts a compensation circuit 1300 in accordance with one embodiment.

FIG. 14A depicts compensation logic 1302 in accordance with one embodiment.

FIG. 14B depicts a data lane offset circuit 1304 in accordance with one embodiment.

DETAILED DESCRIPTION

Disclosed herein are embodiments of a self-sampled clock to extract reference voltage imbalance information from a received clock signal on single-ended links. The reference voltage imbalance is compensated for at a tunable receiver front-end. The clock signal is sampled at a half-rate (e.g., equivalent to a “1010” . . . sampling pattern) and therefore the reference voltage error between the transmitter and the receiver is encoded in the clock duty cycle. The clock duty cycle is detected by self-sampling the clock with a version of itself centered around 1 (one) unit interval (UI) delay. “Unit interval” refers to the minimum time interval between condition changes of a data transmission signal, also known as the pulse time or symbol duration time. For a clock signal the unit interval is the interval between the rising and falling edges of the clock pulse. This results in a sampled “1” for duty cycles above 50% and a sampled “0” for duty cycles below 50%. A sampled “1” is interpreted as a positive transmitter-to-receiver reference voltage offset (error). A sampled “0” is interpreted as a negative transmitter-to-receiver reference voltage offset.

The disclosed solutions utilize duty-cycle compensation logic to tune the receiver front-end offset to drive the clock duty cycle to 50%, thereby tracking the reference noise and closing the control loop. During initialization of the link, the data path delay in the forwarded clock lane may be trimmed to match the delay of receiver (RX) clock buffers. The compensation logic also includes a loop, for example a delay-locked-loop (DLL), formed from the clock lane sampler, de-serializer, and delay tuning logic to dynamically adjust the delay of the 1 UI delay block to compensate for environment changes. The accuracy of the offset compensation is eventually limited by loop latency and offset tuning step size.

The phase sense error for the delay-locked-loop may be determined by comparing even and odd samples of the same de-serialized clock signal as the offset compensation loop. Programable sensing thresholds may be configured to control the open loop gain of both offset and delay compensation loops and to tolerate uncalibrated errors or interference. Voltage regulation and initial calibration may be applied to set a default value of the one-UI delay. Small residual errors of the one-UI delay do not affect the offset compensation loop provided that the threshold margin is large enough. Rapid environment changes such as supply voltage noise may induce higher delay errors and may temporarily increase the dead zone in the offset compensation loop transfer function. The delay tuning logic detects such conditions and adjusts the delay of 1-UI delay block back to within its acceptable range.

The digital circuitry of the compensation loops and any adjacent logic is driven at the parallel clock frequency (herein, PCLK). Signal routing and digital processing latencies may limit the compensation loops response time. A programmable setting is utilized to slow down the output of tuning signals by one or more periods of PCLK. This feature improves the noise tracking accuracy and minimizes the jitter in both offset and delay compensation loops with some impact to overall bandwidth. Counters may be employed with the delay-locked-loop and offset compensation loop to adjust tuning codes by one or more steps each cycle.

The disclosed mechanisms utilize a tunable one-UI delay circuit. The one-UI delay circuit provides 1) monotonic tuning, 2) fine resolution that matches the offset tuning, and 3) a range sufficient for environment factors such as supply noise. The system is designed for linear behavior by distributing each bit to all delay stages. Process variations of the one-UI delay circuit may be compensated for by tuning the clock lane data-path delay. In the compensation loops the sampler operates as a single bit quantizer, which may cause unfavorably high gain under low-noise conditions. To avoid overshooting in the dynamic response of the offset compensation loop, clock dithering may be applied to linearize the noise transfer function by toggling the delay control for one or more least significant bits in each parallel clock cycle. “Dithering” refers to the deliberate introduction of noise to alter predictable behavior of a signal.

FIG. 1 depicts exemplary scenarios for use of a transmitter-receiver system 102 in accordance with some embodiments. A transmitter-receiver system 102 may be utilized in a computing system 104, a vehicle 106, and a robot 108, to name just a few examples.

FIG. 2 depicts an embodiment of a single ended transceiver 200. At a high level, the single ended transceiver 200 comprises a transmitter 202 and a receiver 204. The transmitter data lane drivers 214 of the transmitter 202 communicate data to the receiver 204 over a plurality of serial data links. The transmitter clock lane driver 206 of the transmitter 202 communicates a clock signal to the receiver 204 over a serial clock link. The receiver 204 applies the received clock signal to extract the data from the serial data links. The transmitter data lane drivers 214 and transmitter clock lane driver 206 utilize a transmitter reference voltage 208, and the receiver 204 circuits utilize a receiver reference voltage 212. The transmitter reference voltage 208 and the receiver reference voltage 212 may become offset from one another due to power supply or ground transients and other factors such as environmental noise and process-voltage-temperature (PVT) variations.

The receiver 204 comprises a receiver clock front end 210, receiver clock sampler 220, receiver data front ends 216, receiver data samplers 218, and compensation logic 500. The receiver clock front end 210, receiver clock sampler 220, and compensation logic 500 form a reference voltage offset compensation loop 222 (a clock sampling delay circuit 1000, depicted later, is also part of this loop). The receiver clock sampler 220, clock sampling delay circuit 1000, and compensation logic 500 form a delay compensation loop 224.

In feed-forward clocking systems such as the single ended transceiver 200, the reference voltage offset of single-ended links may thus be determined from the clock signal, because the clock pattern is single-tone and (ideally) DC-balanced. By monitoring the clock lane signal the reference voltage offset may be calculated and compensated for at the receiver 204. This effectively extends the range of single-ended links. More generally it enables communications over greater lengths, noisier environments (such as links within multi-chip modules with strong current transients), or both.

FIG. 3 depicts a self-sampling receiver clock 300 in one embodiment. The clock signal from the transmitter 202 (CLK_IN) is received at the receiver clock front end 210 and sharpened. An amplified and delayed version of CLK_IN matching the data sampling clock, labelled CLK_DQ, is then forwarded to the receiver clock sampler 220 which in the depicted embodiment comprises flop 312 and flop 310. A delay 304 to the received clock signal is incurred between the receiver clock front end 210 and the receiver clock sampler 220. This delay 304 may be tuned, e.g., at power-up of the self-sampling receiver clock 300, to match the delay 304 of the RX clock buffer 306 between the receiver clock front end 210 and the receiver data sampler 218, which in the depicted embodiment comprises flop 316 and flop 314. Only a single data line receiver stage 302 is depicted, although it will be understood that there will typically be one data line receiver stage for each data line between the transmitter 202 and the receiver 204, each receiving RX_CLK and OFFSET_TRIM.

The receiver clock sampler 220 samples CLK_DQ at times triggered by the signal CLK_CK from the clock sampling delay circuit 1000. The odd and even clock samples (labelled RXDAT1 and RXDAT0) from receiver clock sampler 220 are applied to the clock de-serializer 308, which collects a number of clock samples into a vector CLK_PDAT or other parallel structure (e.g., a 16 bit word). This vector may include equal numbers of odd and even samples of the sampled clock signal (e.g., 8 odd samples and 8 even samples). A clock divider 320 is provided so that the output of the clock de-serializer 308 is only sampled after every full vector of clock samples is formed. For example, if the clock de-serializer 308 collects 8 odd samples and 8 even samples to form a 16 bit word, the clock divider would only trigger the flop 318 to sample the clock de-serializer 308 output every 8 cycles of CLK_CK, where a cycle comprises one rising edge and one falling edge of CLK_CK.

The vector output of the flop 318 is input to the compensation logic 500, which is part of both the delay compensation loop 224 and the offset compensation loop 222. The delay compensation loop 224 adjusts the delay of the sampling trigger to the receiver clock sampler 220 by an amount centered around a 1 UI delay value. The amount of delay applied to trigger the receiver clock sampler 220 is determined as 1 UI±the DELAY_TRIM from the compensation logic 500. The offset compensation loop 222 adjusts the receiver clock front end 210 and the receiver data front end 216 to account for the offset between the transmitter reference voltage 208 and the receiver reference voltage 212.

An optional dithering generator 1100 may be applied to DELAY_TRIM to better linearize the closed loop behavior of the delay compensation loop 224.

The self-sampling receiver clock 300 detects the average value of the received clock signal CLK_IN by sampling CLK_DQ by a delayed version of itself. When the inserted delay is about 1 UI (one unit interval), the self-sampling process operates similar to a one-tap low-pass comb filter. The clock sampling delay circuit 1000 may be configured to have a central setting around 1 UI. The clock sampling delay circuit 1000 is inserted between RX_CLK (the sampler clock for all data lanes) and CLK_CK (the sampler clock for CLK_DQ).

The value of delay 304 between the receiver clock front end 210 and the receiver clock sampler 220 may be configured so that the sampled clock signal matches the sampler clock for the data lanes. The compensation logic 500 monitors the sample vector output by the clock de-serializer 308 and adjusts the receiver clock front end 210 offset trim to balance the number of “1” and “0” samples in the vector. For example, when there is substantial positive error due to an offset between the transmitter reference voltage 208 and the receiver reference voltage 212, all samples of RXDAT0 and RXDAT1, and therefore all values in the clock de-serializer 308 output vector, will be “1”. In this case the compensation logic 500 adjusts OFFSET_TRIM downward. The compensation logic 500 adjusts OFFSET_TRIM upward if a negative error is detected as indicated by all “0” values in the clock de-serializer 308 output vector. Because the flop 318 samples the clock de-serializer 308 output vector at a fraction of the full clock rate (e.g., ⅛th of the forwarded clock (CLK_IN) rate), the highest available update rate for OFFSET_TRIM is also this fraction (e.g., ⅛th) of the forwarded clock rate.

FIG. 4 depicts exemplary signal timing diagrams 400 for signals in the self-sampling receiver clock 300 including CLK_IN, CLK_DQ, CLK_CLK, RXDAT0, and RXDAT1.

FIG. 5 depicts an embodiment of compensation logic 500 that may be utilized in embodiments such as the self-sampling receiver clock 300. The compensation logic 500 comprises a detector 502, a 1 UI delay trim counter 504, a clock lane offset counter 506, one or more data lane offset counter 508, and a cycle hold circuit 510.

The detector 502 receives the clock sample vector from the clock de-serializer 308 and generates up or down control signals to the 1 UI delay trim counter 504, clock lane offset counter 506, and each of the data lane offset counters 508.

The cycle hold circuit 510 may be used in order to control the output rates of the 1 UI delay trim counter 504, clock lane offset counter 506, and data lane offset counters 508 independently of the PCLK rate that drives the detector 502. The detector 502 executes at PCLK, but when the latency of either the offset compensation loop 222 or the delay compensation loop 224 is of the order of multiple PCLK cycles, unconditional loop stability is not guaranteed anymore. This may be due to the calculated adjustments becoming outdated by the time they reach their destinations (clock sampling delay circuit 1000, receiver clock front end 210, or receiver data front end 216), resulting in oscillation instead of settling to the right value. The bandwidth of the compensation logic 500 may be effectively reduced by updating the control settings at a lower rate. The cycle hold circuit 510 determines how many extra PCLK cycles the compensation logic 500 should hold before sending the new control signals out. A larger control signal cycle limit improves the compensation loops' stability at the cost of lower bandwidth.

Another configuration option is dynamic reconfiguration of the response speed. FIG. 6 depicts exemplary signal diagrams for loop response. The fast response configuration may be configured to compensate relatively high reference noise frequency (e.g. >20 MHz). In a fast response configuration, when new error information (different from the previous cycle) arrives the control settings update on the next PCLK cycle and the cycle limit counter is reset. Fast response may sacrifice some stability for higher compensation bandwidth and is useful if both the reference noise frequency and its amplitude are high, making the stability of less concern due to the lowered loop gain from saturation of the compensation slew rate.

Yet another configuration option is setting the offset trim step size. The maximum noise frequency and/or amplitude that the offset compensation loop 222 tracks depends on the slew rate, which equals to voltage/bit*bits/cycle*cycles/second. The voltage/bit value is determined by the amplifier design used in the receiver front end, and the cycles/second is constrained by both the link data rate and stability requirements. If the receiver clock sampler 220 implements multi-bit quantization, the control bit step size may be increased accordingly, as can the bits/cycle and compensation slew rate. Some example cases are depicted in the tables below.

OFFSET Step X2 Pdat<>sum 0 (0, 4] (4, 12) [12, 16) 16 Vsum −2 −1 0 1 2

OFFSET Step X1 Pdat<> sum 0 (0, 16) 16 Vsum −1 0 1

An optimization is to apply the falling clock edge of PCLK to drive the compensation logic 500. For longer distance communications, both input and output flops are typically utilized to compensate for the timing variations of routings. A whole PCLK cycle may be too large for a few hundred pico-second wire delay. The wire delay of the PCLK distribution may create a time-borrowing effect and relax the timing challenges. Applying the falling edge of the clock in the compensation logic 500 may decrease the total latency by half a PCLK cycle.

In practice the clock sampling delay circuit 1000 may be affected by process-voltage-temperature (PVT) variations. If the delay shift is slow enough, dynamic tuning of the delay 304 may be utilized to compensate for such variations. The clock sampling delay circuit 1000 itself may have a large enough tuning range to compensate for the relatively fast (relative to the delay shift) environmental changes (e.g. power supply noise). The detector 502 may implement delay error detection by comparing the even-bits-sum and the odd-bits-sum of the CLK_PDAT sample vector output by the clock de-serializer 308. By configuring appropriate threshold values for the delay and offset error detections, both of the offset compensation loop 222 and delay compensation loop 224 may be implemented as bang-bang control loops based on the CLK_PDAT clock de-serializer 308 output. The acceptable 1 UI delay conditions 700 of FIG. 7 and the large 1 UI delay conditions 800 of FIG. 8, and Table 1 and Table 2 below, depict examples of delay error detection and threshold definition that may be utilized by the detector 502, assuming 1-to-16 clock de-serializer 308 is utilized.

TABLE 1 1UI error detection and adjustment Even + Odd Bit Sum 1UI Delay Adjustment ≥2T_(hi) trim down ≤T_(lo) trim up other no change

TABLE 2 offset error detection and adjustment Even − Odd Bit Sum Offset Adjustment >T_(dly) _(—) _(hl) decrease offset <−T_(dly) _(—) _(hl) increase offset other no change

The thresholds may be made tunable to provide more flexibility for optimization. In both the offset compensation loop 222 and the delay compensation loop 224, the clock de-serializer 308 operates as a low-pass filter and limits the maximum bandwidth of the loops. In practice, the bandwidth of both loops is most likely to be constrained by digital circuit latency (e.g., latency of the compensation logic 500). The self-sampling of the clock may function even when the clock sampling delay circuit 1000 delay is inaccurate. An error in the clock sampling delay circuit 1000 delay results in a dead zone in the offset compensation loop 222 transfer function. The trim step size for the clock sampling delay circuit 1000 should be set low enough to match the offset adjustment resolution.

One manner of defining the thresholds for delay compensation loop 224 and offset compensation loop 222 error detection is using set (unvarying) maximum and minimum values, such as 8 and 0, which can be efficiently implemented with logic gates. However, for better environmental noise tolerance and design flexibility, error detection thresholds may be made configurable (e.g., programmable).

The dynamic offset compensation 900 example depicted in FIG. 9 represents ideal transient performance of the offset compensation loop 222. The maximum speed of the offset compensation loop 222 is limited by the slew-rate when only single-bit quantization and counter logic are utilized. The frequency range of the dynamic offset compensation 900 will be larger for lower amplitudes, and vice versa. A lower offset tuning step may provide lower DC residue error but will reduce the slew rate and bandwidth of AC offset compensation. The residue error of AC offset compensation is primarily caused by the latency of the offset compensation loop 222 and the offset compensation step size. In practice extra clock cycles spent on digital processing and communications may reduce the maximum bandwidth of the reference noise offset compensation loop 222.

FIG. 10 depicts an embodiment of the clock sampling delay circuit 1000, with the optional influence of the dithering generator 1100. In the offset compensation loop 222 and delay compensation loop 224 the receiver clock sampler 220 operates as a single bit quantizer that may provide unfavorable infinite gain under certain conditions. This could result in instability. One technique for mitigating this possibility is to employ clock dithering to create a small dead-zone for the receiver clock sampler 220. For example the DELAY TRIM binary code applied to the clock sampling delay circuit 1000 may be toggled by a few least significant bit (LSB) values during each PCLK cycle. In some embodiments a gray-code (e.g., 2-bit DITHER_EN) may be injected into DELAY TRIM to provide more deterministic linearity for the receiver clock sampler 220 effective gain, enabling multi-bit quantization and higher-order filtering for greater compensation bandwidth. Multi-bit sweeping techniques may be utilized to dither the clock sampling for more deterministic linearity. An exemplary embodiment of the dithering generator 1100 is depicted in FIG. 11.

FIG. 12 depicts signal diagrams 1200 including CLK_DQ, a corresponding CLK_CLK signal with dithered edges 1202, and the relationship of the clock de-serializer 308 bit sum to the reference voltage offset for different values of DITHER_EN. Table 3 below shows exemplary signal values for the dithering generator 1100.

TABLE 3 dithering codes and outputs Dither EN Dither Out <1> <0> <1> <0> 0 0 0 0 0 1 0 PCLK_I 1 0 PCLK_Q 0 1 1 PCLK_Q PCLK_I

FIG. 13 depicts a compensation circuit 1300 in one embodiment. The compensation circuit 1300 comprises compensation logic 1302 and one or more data lane offset circuit 1304.

The compensation logic 1302 generates a global offset value that is tuned to each data lane by a data lane offset circuit 1304 for the data lane.

FIG. 14A depicts the compensation logic 1302 in one embodiment, comprising a total ones counter 1402, an even-bit ones counter 1404, an odd-bit ones counter 1406, a thresholding circuit and counter 1408, a holdoff counter 1410, a thresholding circuit and counter 1412, and a holdoff counter 1414.

FIG. 14B depicts a data lane offset circuit 1304 in one embodiment, comprising a clamped adder 1416, a 2's complement to sign-magnitude converter 1418, a flop 1420, and a multiplexer 1422.

The embodiments depicted in FIG. 13 and FIG. 14A and FIG. 14B may be utilized to generate a global offset value with the compensation logic 1302, which is then transformed into local offset values for each data lane by one or more data lane offset circuit 1304 per data lane.

Generating local offsets specific to each data lane based on a global offset value may enable designs that utilize fewer flip-flops, which are expensive in terms of on-die area, clock energy consumed, and power dissipated. Such an approach may also avoid the use of multiple counters to generate the independent data lane offsets, which can introduce timing inconsistencies. Avoiding the need to synchronize multiple counters may enable individualized offset compensation to multiple data lanes to be more environmentally stable.

The global offset generated by the compensation logic 1302 is incorporated as a basis for the local offsets by the one or more data lane offset circuit 1304, each of which may utilize a clamped adder 1416 that is initialized with a data-lane specific offset value based on testing or calibration of the data lane. The initialization value may compensate for offsets inherent in the fabrication of the receiver clock front end 210, for example. A microcontroller (not depicted) may utilize a bus to convey the initialization values to the one or more data lane offset circuit 1304. The multiplexer 1422 in each data lane offset circuit 1304 controls whether the propagate dynamic or initialization values of offset to the receiver clock front end 210.

The initialization settings for the one or more data lane offset circuit 1304 may be used to determine what configuration of the circuitry results in the most equal number of 0s and 1s from samples in the absence of an input signal. This may be performed sequentially, one data lane at a time, or all of the data lanes may be calibrated simultaneously. These initialization values may be set using Joint Test Action Group (JTAG) interfaces, for example.

As noted each data lane offset circuit 1304 generates a local offset for the corresponding data lane based on the global offset generated by the compensation logic 1302. The clamped adder 1416 utilized by the data lane offset circuit 1304 may be a ripple carry adder, or some other simple adder. The clamped adder 1416 may replace a number of D flip-flops utilized in other embodiments, thus contributing to savings in die area and power consumption. A clamping feature is implemented in the clamped adder 1416 to handle positive and negative overflows. In cases where the global offset plus the initial values is a value higher than the clamped adder 1416 can represent, it is undesirable for the adder output to flip over from the highest positive value it can express to the lowest negative value. In the case of such an extreme swing, the clamp may hold the adder output at the highest value until the added results of the inputs crosses back over into a range that may be validly represented. Similarly, should the values go so low that the lowest negative value output would wrap around to the highest positive value, the clamped adder 1416 may hold the output at the lowest negative value until the input values step back up to the point where they result in a validly expressed output.

The global offset signal may be expressed in 2's complement form and converted to a sign-magnitude format by the 2's complement to sign-magnitude converter 1418 before being applied to the receiver clock front end 210 via the flop 1420 (for timing stability—a latch may be utilized instead) and multiplexer 1422. However it is not necessary to express the signals in these formats and others may be used, depending on the implementation.

Like in prior described embodiments, the compensation logic 1302 may receive a sampled clock signal vector (e.g., 16 bits). This vector is applied to a total ones counter 1402 to count a total number of one levels in the sampled clock. The vector is also applied to an even-bit ones counter 1404 to count a number of ones at even bit locations in the vector, and to an odd-bit ones counter 1406 to count a number of ones residing at odd bit locations. The compensation logic 1302 operates to generate a global offset value that drives the number of ones and zeros across the vector to be approximately equal and evenly distributed. Fluctuations in this uniformity result in adjustments to the global offset value generated by the compensation logic 1302. Those of skill in the art will appreciate that because the vector of clock samples is of fixed size, counting a total number of “0s” is effectively the same as counting a total number of “1s” in the vector.

The output of the total ones counter 1402 is applied to the thresholding circuit and counter 1408 which interoperates with a holdoff counter 1410 to match the timing of adjustments to the generated global offset value to the hysteresis of the circuit overall. The thresholds configured in the thresholding circuit and counter 1408 may be set, for example, by the aforementioned microprocessor. The operation of the thresholding circuit and counter 1408 and holdoff counter 1410 to control the adjustment rate of the output to prevent “thrashing” in the closed loop compensation application will be readily understood by those of ordinary skill in the art.

The outputs of the even-bit ones counter 1404 and odd-bit ones counter 1406 are applied to the thresholding circuit and counter 1412, which cooperates with the holdoff counter 1414 in like fashion as described above. The thresholding circuit and counter 1412 generates adjustments to the timing of the clock sampling delay circuit 1000.

LISTING OF DRAWING ELEMENTS

-   -   102 transmitter-receiver system     -   104 computing system     -   106 vehicle     -   108 robot     -   200 single ended transceiver     -   202 transmitter     -   204 receiver     -   206 transmitter clock lane driver     -   208 transmitter reference voltage     -   210 receiver clock front end     -   212 receiver reference voltage     -   214 transmitter data lane drivers     -   216 receiver data front end     -   218 receiver data sampler     -   220 receiver clock sampler     -   222 offset compensation loop     -   224 delay compensation loop     -   300 self-sampling receiver clock     -   302 data line receiver stage     -   304 delay     -   306 RX clock buffer     -   308 clock de-serializer     -   310 flop     -   312 flop     -   314 flop     -   316 flop     -   318 flop     -   320 clock divider     -   400 signal timing diagrams     -   500 compensation logic     -   502 detector     -   504 1 UI delay trim counter     -   506 clock lane offset counter     -   508 data lane offset counter     -   510 cycle hold circuit     -   700 acceptable 1 UI delay conditions     -   800 large 1 UI delay conditions     -   900 dynamic offset compensation     -   1000 clock sampling delay circuit     -   1100 dithering generator     -   1200 signal diagrams     -   1202 dithered edge     -   1300 compensation circuit     -   1302 compensation logic     -   1304 data lane offset circuit     -   1402 total ones counter     -   1404 even-bit ones counter     -   1406 odd-bit ones counter     -   1408 thresholding circuit and counter     -   1410 holdoff counter     -   1412 thresholding circuit and counter     -   1414 holdoff counter     -   1416 clamped adder     -   1418 2's complement to sign-magnitude converter     -   1420 flop     -   1422 multiplexer

Various functional operations described herein may be implemented in logic that is referred to using a noun or noun phrase reflecting said operation or function. For example, an association operation may be carried out by an “associator” or “correlator”. Likewise, switching may be carried out by a “switch”, selection by a “selector”, and so on.

Within this disclosure, different entities (which may variously be referred to as “units,” “circuits,” other components, etc.) may be described or claimed as “configured” to perform one or more tasks or operations. This formulation—[entity] configured to [perform one or more tasks]—is used herein to refer to structure (i.e., something physical, such as an electronic circuit). More specifically, this formulation is used to indicate that this structure is arranged to perform the one or more tasks during operation. A structure can be said to be “configured to” perform some task even if the structure is not currently being operated. A “credit distribution circuit configured to distribute credits to a plurality of processor cores” is intended to cover, for example, an integrated circuit that has circuitry that performs this function during operation, even if the integrated circuit in question is not currently being used (e.g., a power supply is not connected to it). Thus, an entity described or recited as “configured to” perform some task refers to something physical, such as a device, circuit, memory storing program instructions executable to implement the task, etc. This phrase is not used herein to refer to something intangible.

The term “configured to” is not intended to mean “configurable to.” An unprogrammed FPGA, for example, would not be considered to be “configured to” perform some specific function, although it may be “configurable to” perform that function after programming.

Reciting in the appended claims that a structure is “configured to” perform one or more tasks is expressly intended not to invoke 35 U.S.C. § 112(f) for that claim element. Accordingly, claims in this application that do not otherwise include the “means for” [performing a function] construct should not be interpreted under 35 U.S.C § 112(f).

As used herein, the term “based on” is used to describe one or more factors that affect a determination. This term does not foreclose the possibility that additional factors may affect the determination. That is, a determination may be solely based on specified factors or based on the specified factors as well as other, unspecified factors. Consider the phrase “determine A based on B.” This phrase specifies that B is a factor that is used to determine A or that affects the determination of A. This phrase does not foreclose that the determination of A may also be based on some other factor, such as C. This phrase is also intended to cover an embodiment in which A is determined based solely on B. As used herein, the phrase “based on” is synonymous with the phrase “based at least in part on.”

As used herein, the phrase “in response to” describes one or more factors that trigger an effect. This phrase does not foreclose the possibility that additional factors may affect or otherwise trigger the effect. That is, an effect may be solely in response to those factors, or may be in response to the specified factors as well as other, unspecified factors. Consider the phrase “perform A in response to B.” This phrase specifies that B is a factor that triggers the performance of A. This phrase does not foreclose that performing A may also be in response to some other factor, such as C. This phrase is also intended to cover an embodiment in which A is performed solely in response to B.

As used herein, the terms “first,” “second,” etc. are used as labels for nouns that they precede, and do not imply any type of ordering (e.g., spatial, temporal, logical, etc.), unless stated otherwise. For example, in a register file having eight registers, the terms “first register” and “second register” can be used to refer to any two of the eight registers, and not, for example, just logical registers 0 and 1.

When used in the claims, the term “or” is used as an inclusive or and not as an exclusive or. For example, the phrase “at least one of x, y, or z” means any one of x, y, and z, as well as any combination thereof.

Having thus described illustrative embodiments in detail, it will be apparent that modifications and variations are possible without departing from the scope of the invention as claimed. The scope of inventive subject matter is not limited to the depicted embodiments but is rather set forth in the following Claims. 

What is claimed is:
 1. A circuit for use with a data signal and a clock signal, the data signal having a plurality of data lanes, the circuit comprising: a tunable receiver for the data signal; a plurality of data lane offset circuits, each providing an individually configured offset signal to a corresponding one of the data lanes; a clock signal input for receiving the clock signal; a sampling circuit configured to generate a sample of the received clock signal using a one unit interval delayed version of the clock signal; and a compensation circuit configured to generate a global offset signal from the sample of the clock signal and to apply the global offset signal to the plurality of data lane offset circuits.
 2. The circuit of claim 1, further wherein the global offset signal is generated based on a total count of “1s” sampled from the clock signal.
 3. The circuit of claim 2, wherein: the sampling circuit is configured to sample the clock signal at a half-rate; and the global offset signal generated by the compensation circuit is based on the reference voltage error.
 4. The circuit of claim 2, wherein: the sampling circuit is configured to interpret a sampled “1” as a positive reference voltage error; and the sampling circuit is configured to interpret a sampled “0” as a negative reference voltage error.
 5. The circuit of claim 1, each data lane offset circuit adding the global offset signal to the individually configured offset signal for the corresponding data lane.
 6. A circuit comprising a data lane receiver to receive data signal from a transmitter circuit, and a clock lane to receive a clock signal from the transmitter circuit, the circuit comprising: a clock sampler coupled to the clock lane and configured to apply a delayed version of the clock signal to the clock signal to generate a self-sampled clock signal; compensation logic to determine a global offset value representative of a reference voltage error between the data lane receiver and the transmitter circuit based on the self-sampled clock signal; and logic to generate an offset value to apply to the data lane receiver based on the global offset value and a configured local offset value for the data lane receiver.
 7. The circuit of claim 6 configured to center the delayed version of the clock signal on one unit interval of the clock signal.
 8. The circuit of claim 6 further comprising logic to generate a delay value to apply to the clock sampler, the delay value based on the reference voltage error.
 9. The circuit of claim 8, wherein the compensation logic comprises a configurable global offset value adjustment step size.
 10. The circuit of claim 6 wherein the compensation logic is configured to apply a trim to the delayed version of the clock signal.
 11. The circuit of claim 10, wherein the trim is based on environmental conditions of the receiver circuit.
 12. The circuit of claim 10, the compensation logic configured to control an amount of the trim based on a number of sampled “1”s and “0”s sampled in the clock signal.
 13. The circuit of claim 6, the compensation logic configured to receive a de-serialized clock signal formed from the clock signal.
 14. The circuit of claim 6, further comprising a configurable delay at an input of the clock sampler.
 15. The circuit of claim 6, further comprising a dithering circuit configured to affect a sample interval of the clock sampler.
 16. A method in a digital receiver, the method comprising: receiving a clock signal; applying the clock signal to a data receiver; sampling the clock signal with a delayed version of the clock signal centered on one unit interval of the clock signal to generate a count; generating a global offset value based on the count; combing the global offset value with a local offset value for the data receiver to generate an adjusted offset; and applying the adjusted offset to the data receiver.
 17. The method of claim 16, wherein the clock signal is sampled at a half-rate.
 18. The method of claim 16, wherein the count comprises a total count of “1s” in a sample vector of the clock signal.
 19. The method of claim 18, wherein the global offset value is added to the local offset value.
 20. The method of claim 18, wherein the delay of sampling the clock signal is dithered. 